<?php
class MainMenuController extends Controller {
    public $viewClass = 'Smarty';
    public $uses = array('ImportExportMonthLyDataSModel');
    public function index() {
    }

    // retrieve file from server through FTP
    public function retrieveFileFromFtp() {
        $this->layout = null;
        $this->autoRender = false;
        if ($this->request->is('ajax')) {
            // call ftp transfer
            $arrOut = array();
            // exec(BATCH_IMPORT_DATA, $arrOut);
            // check command run OK or not, is running by another user or not, show warning and exit
            if (1 == 1) {
                echo '1';
                die();
            }
        }
        echo '0';
        die();
    }

    // import data from file
    public function importDataFromFile() {
        try {
            // set timeout + memory
            ini_set("max_execution_time","0");
            ini_set('memory_limit', '-1');
            $this->autoRender = false;
            $this->layout = false;
			// 0 Check data importToImExS, importToExS
			$checkImEx = $this->checkImExS();
			$checkEx = $this->checkExS();
			if ($checkImEx) {
	            // 1. del_当月入出庫データＳ削除
	            $this->ImportExportMonthLyDataSModel->deleteImExS();
	            // 3. C:\石狩入出庫精算処理\入出庫データ.txt -> 当月入出庫データＳ
	            $this->ImportExportMonthLyDataSModel->importToImExS();
	            // 6. del_当月出庫データ削除 , don't delete data
	            // $this->ImportExportMonthLyDataSModel->deleteEx();
	            // 7. ST_当月入出庫データ01抽出
	            // 8. ST_当月入出庫データ02抽出
	            // 9. ST_当月入出庫データ03（追加）
	            $this->ImportExportMonthLyDataSModel->miningImExData();
	            // 13. del_当月入出庫データＳ削除
	            $this->ImportExportMonthLyDataSModel->deleteImExS();												
			}
			
			if ($checkEx) {
	            // 2. del_当月出庫データＳ削除
	            $this->ImportExportMonthLyDataSModel->deleteExS();
	            // 4. del_当月入出庫データ削除, don't delete data
	            // $this->ImportExportMonthLyDataSModel->deleteImEx();
	            // 5. C:\石狩入出庫精算処理\出庫データ.txt -> 当月出庫データＳ
	            $this->ImportExportMonthLyDataSModel->importToExS();
	            //10. ST2_当月出庫データ01抽出
	            //11. ST2_当月出庫データ02抽出
	            //12. ST2_当月出庫データ03（追加）
	            $this->ImportExportMonthLyDataSModel->miningExData();
	            // 14. del_当月出庫データＳ削除
	            $this->ImportExportMonthLyDataSModel->deleteExS();				
			}
			if (!$checkImEx &&  !$checkEx) {
				// not run runAutoProccess if fail to
				echo 'Data import exists in this sytem, please try another data';
				exit();
			} else {
	            // マスタ自動生成処理
	            $this->runAutoProcess();
				echo '1';
				exit();				
				
			}
        } catch (Exception $ex) {
            // write log TODO
            echo $ex->getMessage();
            exit();
        }
    }

	// true -> can insert
	// false -> cant insert
	private function checkImExS() {
		// get date from file
		$file = fopen(DATA_FILE_IMPORT_EXPORT_DIR,"r");
		$item = fgetcsv($file, 1000, "\t");
		fclose($file);
		$dateFile = isset($item[DATE_COLUMN_IMPORT_EXPORT])?$item[DATE_COLUMN_IMPORT_EXPORT]:'99999999';		
		// get date from DB
		$arrTemp = $this->ImportExportMonthLyDataSModel->query("select im_ex_date as date 
																from t_import_export_monthly_data
																where  im_ex_date = {$dateFile} limit 1;");
		if (empty($arrTemp)) {
			return true;
		}
		return false;
	}

	// true -> can insert
	// false -> cant insert
	private function checkExS() {
		// get date from file
		$file = fopen(DATA_FILE_EXPORT_DIR,"r");
		$item = fgetcsv($file, 1000, "\t");
		fclose($file);		 
		$dateFile = isset($item[DATE_COLUMN_EXPORT])?$item[DATE_COLUMN_EXPORT]:'99999999';
		// get date from DB
		$arrTemp = $this->ImportExportMonthLyDataSModel->query("select im_ex_date as date 
																from  t_export_monthly_data 
																where  im_ex_date = {$dateFile} limit 1;");
		if (empty($arrTemp)) {
			return true;
		}
		return false;
	}
		
    private function runAutoProcess(){
        //1. ｍ_エリア生成03（エリアマスタとの不一致）
        //2. Q ｍ_エリア生成04（エリアマスタに追加）
        $this->ImportExportMonthLyDataSModel->insArea();
        //3. ｍ_荷主マスタ生成03（荷主マスタとの不一致）
        //4. ｍ_荷主マスタ生成04（荷主マスタに追加）
        //5. ｍ_荷主マスタ生成05（レコードカウント）
        //6. m_荷主マスタ生成06（集約データ削除）
        //7. m_荷主マスタ生成07(集約データ追加)
        //8. m_荷主マスタ生成08（名称置換）
        $this->ImportExportMonthLyDataSModel->insShipper();
        //9. ｍ_配送手数料生成02（配送手数料マスタとの不一致）
        //10. ｍ_配送手数料生成03（追加）
        $this->ImportExportMonthLyDataSModel->insShippingFee();
    }
}

